From: acgtyrant Date: Tue, 24 Mar 2015 03:19:46 +0000 (+0800) Subject: windowMenu: Add option to move different monitor X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~1378 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=43fc598bd594211eadc589e89367c2a0c5a70c5d;p=gnome-shell.git windowMenu: Add option to move different monitor The window menu has all those workspace related options, but with multiple monitors, it is much more interesting to quickly move a window 'over' to the other monitor. https://bugzilla.gnome.org/show_bug.cgi?id=633994 --- diff --git a/js/ui/windowMenu.js b/js/ui/windowMenu.js index 3d378fad7..a31482131 100644 --- a/js/ui/windowMenu.js +++ b/js/ui/windowMenu.js @@ -115,6 +115,39 @@ const WindowMenu = new Lang.Class({ } } + let screen = global.screen; + let nMonitors = screen.get_n_monitors(); + if (nMonitors > 1) { + this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); + + let monitorIndex = window.get_monitor(); + + let upMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.UP); + if (upMonitorIndex != -1) { + this.addAction(_("Move to Monitor Up"), Lang.bind(this, function(event) { + window.move_to_monitor(upMonitorIndex); + })); + } + let downMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.DOWN); + if (downMonitorIndex != -1) { + this.addAction(_("Move to Monitor Down"), Lang.bind(this, function(event) { + window.move_to_monitor(downMonitorIndex); + })); + } + let leftMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.LEFT); + if (leftMonitorIndex != -1) { + this.addAction(_("Move to Monitor Left"), Lang.bind(this, function(event) { + window.move_to_monitor(leftMonitorIndex); + })); + } + let rightMonitorIndex = screen.get_monitor_neighbor_index(monitorIndex, Meta.ScreenDirection.RIGHT); + if (rightMonitorIndex != -1) { + this.addAction(_("Move to Monitor Right"), Lang.bind(this, function(event) { + window.move_to_monitor(rightMonitorIndex); + })); + } + } + this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); item = this.addAction(_("Close"), Lang.bind(this, function(event) {